package com.ruoyi.worker.service;

import com.ruoyi.worker.domain.*;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * 功能描述：
 *
 * @Classname ITermWorkerService
 * @Description TODO
 * @Date 2021/11/8 14:43
 * @Created by 刘松山
 */
public interface ITermWorkerService {
    /**
     * 查询【长期工】
     *
     * @param id 【长期工】主键
     * @return 【长期工】
     */
    public TermWorker selectTermWorkerById(Long id);

    /**
     * 查询【长期工】列表
     *
     * @param termWorker 【长期工】
     * @return 【长期工】集合
     */
    public List<TermWorker> selectTermWorkerList(TermWorker termWorker);

    /**
     * 新增【长期工】
     *
     * @param termWorker 【长期工】
     * @return 结果
     */
    public int insertTermWorker(TermWorker termWorker);

    /**
     * 修改【长期工】
     *
     * @param termWorker 【长期工】
     * @return 结果
     */
    public int updateTermWorker(TermWorker termWorker) throws ParseException;

    /**
     * 批量删除【长期工】
     *
     * @param ids 需要删除的【长期工】主键集合
     * @return 结果
     */
    public int deleteTermWorkerByIds(Long[] ids);

    /**
     * 删除【长期工】信息
     *
     * @param id 【长期工】主键
     * @return 结果
     */
    public int deleteTermWorkerById(Long id);
    /**
     *
     * 功能描述:查询组织结构列表
     * @Date 2021/11/8 16:35
     * @param
     * @return java.util.Map<java.lang.String,java.lang.Object>
     * @author admin
     */
    public Map<String,Object> listDept();
    /**
     *
     * 功能描述:批量导入
     * @Date 2021/11/9 13:14
     * @param
     * @param excelTermWorkers
     * @return int
     * @author admin
     */
    List<String>  importTermWorker(List<TermWorkerExcel> excelTermWorkers);
    /**
     *
     * 功能描述:查询长期工在职离职流水
     * @Date 2021/11/9 14:18
     * @param
     * @param idCard
     * @return java.util.List<com.ruoyi.worker.domain.TermWorker>
     * @author admin
     */
    List<TermWorker> selelctTermWorkerLogList(String idCard);
    /**
     *
     * 功能描述:修改为黑名单
     * @Date 2021/11/9 15:32
     * @param beau 对象
     * @return int
     * @author admin
     */
    int updateWorkStatus(RzBlockWorker beau);
    /**
     *
     * 功能描述:保存长期工照片
     * @Date 2021/11/9 21:23
     * @param
     * @param termWorkerImg
     * @return int
     * @author admin
     */
    int addTermWorkerImg(TermWorkerImg termWorkerImg);

    /**
     * 获取职级数据
     *
     * @return java.util.Map
     * @author Hush.
     * @since 2021/11/28 16:53
     */
    List<Map<String, Object>> listProfessionRank();

    /**
     * 长期工模板中的校验数据(缓存)
     *
     * @return java.util.Map
     * @author Hush.
     * @since 2021/12/2 15:28
     */
    Map<String, Object> cashDataForTermWorkerExcel();

    /**
     * 导入长期工excel模板
     *
     * @param list: excel数据
     * @author Hush.
     * @since 2021/12/2 17:39
     */
    void importTermWorkerTemplate(List<TermWorkerExcel> list);

    /**
     * 检查是否已在黑名单中
     *
     * @param beau:黑名单对象
     * @return RzBlockWorker
     * @author Hush.
     * @since 2021/12/15 15:46
     */
    RzBlockWorker checkBlackFlag(RzBlockWorker beau);

    /**
     * 黑名单员工分页数据
     *
     * @param dto: 检索条件
     * @return com.ruoyi.common.core.page.TableDataInfo
     * @author Hush.
     * @since 2021/12/15 17:16
     */
    List<RzBlockWorker> selectRzBlockWorkerList(RzBlockWorker dto);

    /**
     * 移出黑名单
     *
     * @param beau:员工信息
     * @return com.ruoyi.common.core.domain.AjaxResult
     * @author Hush.
     * @since 2021/12/16 15:09
     */
    int removeFromBlacklist(RzBlockWorker beau);

    /**
     * @description:  查询长期工修改流水
     * @author 刘松山
     * @date 2021/12/31 15:05
     *
     */
    public List<TermWorkerModifyLog> selectTermWorkerModifyLogById(TermWorkerModifyLog t);
/**
 * @description:  批量修改离职时间
 * @author 刘松山
 * @date 2022/1/4 13:13
 *
 */
    public int updateTermWorkerLeaveTime(Long[] ids,String userName);
}
